package com.ld.hpfs.common.utils;

import java.security.Security;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.ld.hpfs.common.utils.GmailSenderInfo;
/**
 * 使用Gmail发送邮件
 */
public class GmailSender {

	public void mailsend(final GmailSenderInfo gmail) throws AddressException, MessagingException {
		// TODO Auto-generated method stub
		Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
		final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
		// Get a Properties object
		Properties props = System.getProperties();
		props.setProperty("mail.smtp.host", gmail.getHost());
		props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
		props.setProperty("mail.smtp.socketFactory.fallback", "false");
		props.setProperty("mail.smtp.port", gmail.getPort());
		props.setProperty("mail.smtp.socketFactory.port", gmail.getPort());
		props.put("mail.smtp.auth", "true");
		Session session = Session.getDefaultInstance(props,
				new Authenticator() {
					protected PasswordAuthentication getPasswordAuthentication() {
						return new PasswordAuthentication(gmail.getUsername(), gmail.getPassword());
					}
				});

		// -- Create a new message --
		Message msg = new MimeMessage(session);

		// -- Set the FROM and TO fields --
		msg.setFrom(new InternetAddress(gmail.getUsername()));
		msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(gmail.getMailTo(), false));
		msg.setSubject(gmail.getSubject());
		msg.setText(gmail.getContent());
		msg.setSentDate(new Date());
		Transport.send(msg);

		System.out.println("Gmail Message sent.");
	}
}
